%% This document created by Scientific Word (R) Version 3.0

\documentclass[a4paper,twoside]{book}
\usepackage[latin1]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{latexsym}
\usepackage{graphicx}
\usepackage{amsfonts}
\usepackage{amssymb}
%TCIDATA{OutputFilter=latex2.dll}
%TCIDATA{CSTFile=book.cst}
%TCIDATA{LastRevised=Wed Mar 08 15:22:41 2000}
%TCIDATA{<META NAME="GraphicsSave" CONTENT="32">}
\setlength{\oddsidemargin}{0.cm}
\setlength{\evensidemargin}{0.cm}
\setlength{\textwidth}{13.cm}
\setlength{\textheight}{16.cm}
\setlength{\parskip}{0.15cm}
\setlength{\parindent}{0.pt}
\newenvironment{linea}{
\begin{picture}(300,10)
\line(300,0){300}
\end{picture}}{ }
\newenvironment{Ej E/S}
               {\setlength{\parskip}{0.0cm}}
               {\endlist}
\newenvironment{Lista letras}
               {\list{\alph{letra}.}{
                        \usecounter{letra}
                        \itemsep     0.0cm
                        \itemindent   0.0cm
                        \listparindent 0.0cm
                        \itemindent 0.0cm
                        \rightmargin  0.5cm
                        \leftmargin 1.0cm
                        \labelwidth 0.5cm
                        \parsep 0.0cm
                        \topsep 0.0cm
                        \parskip 0.0cm}}
               {\endlist}
\newenvironment{Programa}
               {\ttfamily\small\list{\arabic{conta}.}{\usecounter{conta}
                        \itemsep     0.0cm
                        \itemindent   0.0cm
                        \listparindent 0.0cm
                        \itemindent 0.0cm
                        \rightmargin  0.7cm
                        \leftmargin 1.0cm
                        \labelwidth 0.5cm
                        \parsep 0.0cm
                        \topsep 0.0cm
                        \parskip 0.0cm}}
               {\endlist}
\newenvironment{Programa-cuadro}
               {\begin{lrbox}{\savepar}
                \begin{minipage}[b]{13.cm}
                \ttfamily\list{\arabic{conta}.}{\usecounter{conta}
                        \itemsep     0.0cm
                        \itemindent   0.0cm
                        \listparindent 0.0cm
                        \itemindent 0.0cm
                        \rightmargin  0.7cm
                        \leftmargin 1.0cm
                        \labelwidth 0.5cm
                        \parsep 0.0cm
                        \topsep 0.0cm
                        \parskip 0.0cm}}
               {\endlist\end{minipage}\end{lrbox}\fbox{\usebox{\savepar}}}
\newenvironment{Lista guiones}{
     \begin{list}{-}{
     \setlength{\leftmargin}{0.5cm}
     \setlength{\labelwidth}{0.5cm}
     \setlength{\parsep}{0.pt}
     \setlength{\topsep}{0.0cm}
     \setlength{\parsep}{0.pt}
     \setlength{\itemsep}{0.pt}
     \setlength{\parskip}{0.pt}}
   }
   {\end{list}}
\newsavebox{\savepar}
\newenvironment{recuadro}{
\begin{lrbox}{\savepar}
\begin{minipage}[b]{13.cm}
}
{\end{minipage}\end{lrbox}\fbox{\usebox{\savepar}}}
\newenvironment{Solucion}{\newline \Large {\textbf {SOLUCI\'ON}}}{ }
\newcommand{\enunciado}{\Large{\textbf{ENUNCIADO}}}

\begin{document}
\newcounter{conta} \newcounter{letra} \setcounter{letra}{1}

{\Large {\textbf{ENUNCIADO}} -L5}

Para la implementaci\'{o}n sobre una determinada m\'{a}quina de un compilador
de C, se sabe que un dato de tipo car\'{a}cter ocupa 1 byte, un dato de tipo
entero ocupa 2 bytes, un dato de tipo real 10 bytes, y un dato de tipo puntero
ocupa 2 bytes. El tama\~{n}o requerido para las estructuras corresponde a la
agregaci\'{o}n del tama\~{n}o requerido para cada una de sus componentes. Para
la ejecuci\'{o}n del programa que se detalla posteriormente se dispone de un
bloque contiguo de memoria cuyo tama\~{n}o exacto se determinar\'{a} en tiempo
de ejecuci\'{o}n, aunque se sabe que, en cualquier caso, ser\'{a} mayor de 64
Kbytes. Se pide:

\begin{Lista letras}
\item  Calcular el tama\~{n}o de los objetos asociados a cada uno de los
punteros que aparecen en la secci\'{o}n de declaraci\'{o}n de variables del programa.

\item  Se desea implementar una t\'{e}cnica de gesti\'{o}n de la memoria del
mont\'{o}n basada en una estructura de bloques marcados (''boundary tag'') con
la estrategia del primer bloque. Dibujar el esquema correspondiente a la
estructura de cada registro.

\item  Dibujar los esquemas correspondientes al estado del mont\'{o}n tras la
ejecuci\'{o}n de cada una de las l\'{i}neas del m\'{o}dulo principal.
\end{Lista letras}

\textit{PROGRAMA}

\begin{Programa}
\item  typedef struct \{

\item \ \ \ int cod;

\item \ \ \ char *loc;

\item \ \ \ float lat;

\item \} DATOS;

\item  typedef struct \{

\item \ \ \ int nubes[12];

\item \ \ \ int insol[12];

\item \ \ \ float presion[12];

\item \} ANUAL;

\item  typedef int DIAMED[24][12];

\item  DATOS unaestacion, *p1;

\item  ANUAL *p2, *p3;

\item  DIAMED *p4, *p5;

\item  main() \{

\item \ \ \ unaestacion.cod=1795;

\item \ \ \ unaestacion.lat=40.41;

\item \ \ \ p1=(DATOS *)malloc(sizeof(DATOS));

\item \ \ \ p2=(ANUAL *)malloc(sizeof(ANUAL));

\item \ \ \ p3=(ANUAL *)malloc(sizeof(ANUAL));

\item \ \ \ p4=(DIAMED *)malloc(sizeof(DIAMED));

\item \ \ \ free(p2);

\item \ \ \ p5=(DIAMED *)malloc(sizeof(DIAMED));

\item \ \ \ free(p1);

\item \}
\end{Programa}

{\Large {\textbf{SOLUCION}} }
\end{document}